<?php

declare(strict_types=1);

namespace DreamCat\StateMachine\StateInterface;

use DreamCat\StateMachine\Popo\MachineData;

/**
 * 状态转移目标计算接口
 * @author vijay
 */
interface TransferDecisionInterface
{
    /**
     * 状态转移目标计算
     * @param MachineData $machineData 状态机数据
     * @param string $action 触发动作
     * @param mixed|null $actionParam 动作参数，预执行时无参数
     * @return string 计算结果，根据结果决定目标状态
     */
    public function transferDecision(MachineData $machineData, string $action, mixed $actionParam = null): string;
}

# end of file
